<?php

class App_Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract {
	
	function __construct() {
	
	}
	/**
	 * @param Zend_Controller_Request_Abstract $request
	 */
	public function preDispatch(Zend_Controller_Request_Abstract $request) {
		
		$moduleName 		= $request->getModuleName();
		$controllerName 	= $request->getControllerName();
		$actionName 		= $request->getActionName();
		$frontController 	= Zend_Controller_Front::getInstance();
//		$user 				= Zend_Auth::getInstance()->getIdentity();
		
		//En este caso se deja continuar sin estar autenticado, ya que es el Action que realiza
		//la autenticación por primera vez
		if ("usuarios"==$moduleName && "seguridad"==$controllerName && ("login"==$actionName || "logout"==$actionName)) {
			return;
		}
		
    	//Ahora se valida que la url no haya sido manipulada por el usuario
		if(!App_Util_SafeUrl::validar($request)) {
			$request->setModuleName ( "default" )->setControllerName ( "error" )->setActionName ( "ilegal" );
			//Zend_Debug::dump("Por ahora esto es una advertencia de que la URL no está debidamente encriptada. En un futuro cercano no te dejará pasar asi. Preguntar a vcardenas.");
		}
		
		//Dejamos pasar si es subida de un archivo
		if ("generales"==$moduleName && "archivo"==$controllerName && "upload"==$actionName) {
			return;
		}
		
    	//Tambien dejamos pasar si es diligenciamiento de una encuesta
		if ("autoevaluacion"==$moduleName && "diligenciar"==$controllerName && "index"==$actionName) {
			return;
		}
		
		//Verificamos si el usuario se encuentra autenticado
		if (! Zend_Auth::getInstance()->hasIdentity ()) {
			//FIXME esto debe estar descomentado
//			$request->setModuleName ( "default" )->setControllerName ( "error" )->setActionName ( "noaccess" );
			//return;
		}
		
		if (!$frontController->getDispatcher()->isDispatchable ( $request )) {
			$request->setModuleName( "default" )->setControllerName( 'index' )->setActionName( 'home' );
		}
		
		if($request->getParam("__readonly") == 1) {
		    $formStatic = new Zend_Session_Namespace("FORM_DATA_STATIC");
            $formStatic->readonly = true;
		}
		
		//FIXME a continuacion se debería verificar si tiene permiso para el modulo, controlador, y/o accion
		
//		if ($controllerName == 'admin' and ! isset ( $user )) {
//			throw new Exception ( 'You must login to access this page.' );
//		}
//
//		$auth = Zend_Auth::getInstance ();
		
	}
	
	public function postDispatch(Zend_Controller_Request_Abstract $request) {
		
		$moduleName = $request->getModuleName();
		$titulo = "-";
		switch ($moduleName) {
			case "conexionesbd":
				$titulo = "Conexiones BD";
				break;
			case "indicadores":
				$titulo = "Indicadores";
				break;
			case "variables":
				$titulo = "Variables";
				break;
			case "planesmejoramiento":
				$titulo = "Planes de mejoramiento continuo";
				break;
			case "autoevaluacion":
				$titulo = "Gestor de autoevaluación";
				break;
			case "programas":
				$titulo = "Gestor de programas";
				break;
			case "usuarios":
				$titulo = "Gestor de usuarios";
				break;
			case "salas":
				$titulo = "Sesiones de Consejo";
				break;
			case "roles":
				$titulo = "Gestor de roles";
				break;
			case "solicitudes":
			    $domConfig = Zend_Registry::get("domConfig");
			    $sesionSolicitud = new Zend_Session_Namespace("SOLICITUD");
			    $titulo = $domConfig->TIPO_PROCESO->get($sesionSolicitud->tiposolicitud);
				break;
			case "listas":
			    $controllerName 	= $request->getControllerName();
			    if($controllerName == "factores") {
			        $titulo = "Gestor de Listas de " . ucfirst($controllerName);
			    } elseif($controllerName == "infoautoevaluacion") {
			        $titulo = "Gestor de Listas de Información de Autoevaluación";
			    } elseif($controllerName == "informepares") {
			        $titulo = "Gestor de Listas de Consideraciones Informe de Pares";
			    } else {
			        $titulo = "Gestor de " . ucfirst($controllerName);
			    }
				break;
			case "instituciones":
				$titulo = "Información institucional";
				break;
			case "visitas":
				$titulo = "Gestión Visita";
				break;
			case "reportes":
				$titulo = "Reportes";
				break;
			case "sedes":
				$titulo = "Gestor de sedes";
				break;
			case "default":
				$titulo = "Bienvenido!";
				break;
		}
	
		$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    	$viewRenderer->initView();
    	//Zend_Debug::dump($viewRenderer->view->placeholder("titulo"));
    	//Zend_Debug::dump($titulo);
    	if(strlen($viewRenderer->view->placeholder("titulo")) == 0) {
    	    $viewRenderer->view->placeholder("titulo")->set($titulo);
    	}
    	
	}

}//fin de la clase
